public class ProjectileEntity
{
    /// <summary>
    /// 投射物本身对象
    /// </summary>
    /// <returns>投射物本身对象</returns>
    public extern Unit api_get_self();

    /// <summary>
    /// 获取单位ID
    /// </summary>
    /// <returns>单位ID</returns>
    public extern int? api_get_id();

    /// <summary>
    /// 投射物编号
    /// </summary>
    /// <returns>投射物的key</returns>
    public extern int? api_get_key();

    /// <summary>
    /// 投射物产生者
    /// </summary>
    /// <returns>投射物产生者</returns>
    public extern Unit api_get_owner();

    /// <summary>
    /// 销毁投射物对象
    /// </summary>
    /// <param name="unit"> 销毁的投射物对象 </param>
    /// <param name="immediately"> 立即移除表现 </param>
    /// <returns></returns>
    public extern void api_delete(Unit unit,bool? immediately);

    /// <summary>
    /// 设置投射物位置
    /// </summary>
    /// <param name="point"> 投射物位置 </param>
    /// <param name="interpolation"> 是否平滑 </param>
    /// <returns></returns>
    public extern void api_set_position(Point point,bool? interpolation);

    /// <summary>
    /// 设置投射物朝向
    /// </summary>
    /// <param name="face_angle"> 投射物朝向 </param>
    /// <returns></returns>
    public extern void api_set_face_angle(double? face_angle);

    /// <summary>
    /// 设置投射物旋转
    /// </summary>
    /// <param name="x"> x轴旋转 </param>
    /// <param name="z"> y轴旋转 </param>
    /// <param name="y"> z轴旋转 </param>
    /// <returns></returns>
    public extern void api_set_rotation(double? x,double? z,double? y);

    /// <summary>
    /// 设置投射物缩放
    /// </summary>
    /// <param name="x"> x轴缩放 </param>
    /// <param name="z"> y轴缩放 </param>
    /// <param name="y"> z轴缩放 </param>
    /// <returns></returns>
    public extern void api_set_scale(double? x,double? z,double? y);

    /// <summary>
    /// 设置投射物特效播放速度
    /// </summary>
    /// <param name="rate"> 播放速度 </param>
    /// <returns></returns>
    public extern void api_set_animation_speed(double? rate);

    /// <summary>
    /// 设置投射物持续时间
    /// </summary>
    /// <param name="duration"> 持续时间 </param>
    /// <returns></returns>
    public extern void api_set_duration(double? duration);

    /// <summary>
    /// 增加投射物持续时间
    /// </summary>
    /// <param name="extra_time"> 持续时间变化值 </param>
    /// <returns></returns>
    public extern void api_add_duration(double? extra_time);

    /// <summary>
    /// 获取投射物剩余持续时间
    /// </summary>
    /// <returns>投射物剩余持续时间</returns>
    public extern double? api_get_left_time();

    /// <summary>
    /// 获取投射物高度
    /// </summary>
    /// <returns>投射物高度</returns>
    public extern double? api_get_height();

    /// <summary>
    /// 获取投射物角度
    /// </summary>
    /// <returns>投射物的角度</returns>
    public extern double? api_get_face_angle();

    /// <summary>
    /// 获取投射物位置
    /// </summary>
    /// <returns>投射物位置</returns>
    public extern Point api_get_position();

    /// <summary>
    /// 获取投射物朝向
    /// </summary>
    /// <returns>投射物朝向</returns>
    public extern Point api_get_face_dir();

    /// <summary>
    /// 投射物抬高
    /// </summary>
    /// <param name="y"> 定点数 </param>
    /// <returns></returns>
    public extern void api_raise_height(Fix32 y);

    /// <summary>
    /// 获取投射物的字符串属性
    /// </summary>
    /// <param name="attr_name"> 属性名称 </param>
    /// <returns>字符串类型返回值</returns>
    public extern string api_get_str_attr(string attr_name);

    /// <summary>
    /// 设置投射物的字符串属性
    /// </summary>
    /// <param name="attr_name"> 属性名称 </param>
    /// <param name="value"> 属性取值 </param>
    /// <returns></returns>
    public extern void api_set_str_attr(string attr_name,string value);

    /// <summary>
    /// 投射物添加键值对
    /// </summary>
    /// <param name="tag"> TAG </param>
    /// <returns></returns>
    public extern void api_add_tag(string tag);

    /// <summary>
    /// 投射物移除键值对
    /// </summary>
    /// <param name="tag"> TAG </param>
    /// <returns></returns>
    public extern void api_remove_tag(string tag);

    /// <summary>
    /// 对投射物所属单位的所属玩家关系播放音乐
    /// </summary>
    /// <param name="camp_target"> 玩家关系 </param>
    /// <param name="sid"> 乐曲编号 </param>
    /// <param name="loop"> 是否循环 </param>
    /// <returns></returns>
    public extern void api_play_sound_by_proj_for_role_relation(int? camp_target,int? sid,bool? loop);

}
